package com.clps.rulesregulations.dao;

import com.clps.rulesregulations.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 用户数据库操作
 *
 */
@Repository
@Mapper
public interface UserDao {
    /**
     * 根据用户名查询用户
     *
     * @param username
     * @return
     */
    public User findUserByUsername(String username);
    public User checkUser(@Param("username")String username,@Param("id") String id);

    /**
     * 删除用户
     *
     * @param userId
     */
    public void delUser(Integer userId);

    /**
     * 根据条件查找用户集合
     *
     * @param condition
     * @return
     */
    public List<User> findUsersByPage(Map<String, Object> condition);
    public List<User> findUsersByDeptId(Map<String, Object> condition);
    public List<User> findUsersByList(Map<String, Object> condition);


    /**
     * 添加用户
     *
     * @param user
     */
    void addUser(User user);

    /**
     * 锁定用户
     *
     * @param userId
     */
    void lockUser(Integer userId);

    /**
     * 修改密码
     * @param user
     */
    void updatePassword(User user);
    void resetPassword(User user);

    /**
     * 恢复用户
     *
     * @param userId
     */
    void recoveryUser(Integer userId);

    /**
     * 更新用户
     *
     * @param user
     */
    void updateUser(User user);

    /**
     * 更新用户金额
     *
     * @param user
     */
    void addUserAmount(User user);

    /**
     * 根据用户id查询用户
     *
     * @param userId
     * @return
     */
    User findUserByUserId(Integer userId);

    /**
     * 减少用户金额
     *
     * @param user
     * @return
     */
    int reduceUserAmount(User user);
}
